Webアプリケーション概要 2021
Web サーバ
Apache, IIS, Nginx
Web サーバがやること
リクエストを受け付ける
結果を計算する
結果を送り返す
通信と計算のセット
サーバ - クライアント通信 API
同じマシンでも異なるマシンでも
クライアント側 Socket
初期化
サーバと接続
送信 / 受信
終了
サーバ側 Socket
初期化
アドレスを設定
リクエスト受付
リクエスト確立
read / write
終了
複数リクエスト
リクエストの待受と処理が同時に行えるとよい
accept が返ったらすぐに処理開始
処理の結果を待たずに accept に戻る
プロセスやスレッドを使う
Web アプリ
動的な Web ページ
Input-Process-Output
Process で任意のプログラムを実行して結果を返す
など
リクエストが来るたびにアプリのプロセスを起動するので遅い
Web アプリケーションサーバ
起動しっぱなし
Web サーバがアプリケーションサーバにリクエストを中継
主に HTTP
永続化
素朴にファイル書き込みは大変
ログイン
ユーザごとにデータを保存
ユーザを特定
ログイン状態
サーバからクライアントにデータを保存される仕組み
サーバが Set-Cookie: <キー> = <値> というヘッダを載せてレスポンスを返す
HTTP が状態を持つことができる
一連のアクセスでデータを保持する仕組み
Cookie だとセキュリティ的に、、、
パスワードを毎回送る
データ量の限界
セッション開始時(ログイン時)にランダムな ID を発行
それを Cookie に保持
データは ID をキーにサーバ側に保存する
パスワードはハッシュ関数を通したハッシュ値を保存
ログイン時は入力されたパスワードのハッシュ値を取り、保存されているハッシュ値との比較
HTTP を #TLS で暗号化 -> HTTPS